metro_areas = [
    ('Tokyo', 'JP', 36.933, (35.689722, 139.691667)),
    ('Delhi NCR', 'IN', 21.935, (28.613889, 77.208889)),
    ('Mexico City', 'MX', 20.142, (19.433333, -99.133333)),
    ('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
    ('São Paulo', 'BR', 19.649, (-23.547778, -46.635833)),]
def main():
    print(f'{"":15} | {"latitude":>9} | {"longitude":>9}')
    for record in metro_areas:
        match record:#❶
            case [name, _, _, (lat, lon)] if lon <= 0:#❷
                print(f'{name:15} | {lat:9.4f} | {lon:9.4f}')

if __name__=="__main__":
    main()
'''
❶这个match的匹配对象是record，即metro_areas中的各个元组。
❷一个case子句由两部分组成：一部分是模式，另一部分是使用if关键字指定的卫语句（guard clause，可选）。
一般来说，匹配对象同时满足以下条件方能匹配序列模式。
01. 匹配对象是序列。
02. 匹配对象和模式的项数相等。
03. 对应的项相互匹配，包括嵌套的项。
例如，示例中的模式[name, _, _, (lat, lon)]匹配一个含有 4 项的序列，而且最后一项必须是一个含有两项的序列。

序列模式可以匹配collections.abc.Sequence的多数实际子类或虚拟子类的实例，但str、bytes和bytearray除外。
'''